package com.example.netty.netty.handler;

import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.util.CharsetUtil;

public class MyClientHandler extends SimpleChannelInboundHandler<Long> {
    @Override
    protected void channelRead0(ChannelHandlerContext channelHandlerContext, Long aLong) throws Exception {
        System.out.println("收到消息："+aLong);
    }

    //SimpleChannelInboundHandler是处理入站请求的，这里是利用他建立连接时触发的方法来发消息而已
    //调用ctx.writeAndFlush就会调用出站handler
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        System.out.println("MyClientHandler被调用 channelActive 发送数据:123L");
//        ctx.writeAndFlush(123L);
        //qwerqwerqwerqwer十六个字节 Long八个字节，所以会调用两次解码
        //编码器父类MessageToByteEncoder，在编码前会先判断是否为他要处理的数据类型，
        // 如果不是则不编码，直接发送，所以调用编码的次数为零
        ctx.writeAndFlush(Unpooled.copiedBuffer("qwerqwerqwerqwer", CharsetUtil.UTF_8));
    }
}
